# -*- coding=utf-8-*-
"""
@File:memory_selection
@Author:Created by Han X.Y
@Date:on 2021/7/26 19:37 
"""
"""
基于嵌套列表实现二叉树
"""


def BinaryTree(r):
    return [r, [], []]  # 第一个位置为根节点，第二个点解为左子树，第三个节点为右子树


def insertLeft(root, newBranch):
    """
    插入左子树
    """
    t = root.pop(1)
    if len(t) > 1:
        root.insert(1, [newBranch, t, []])
    else:
        root.insert(1, [newBranch, [], []])


def insertRight(root, newBranch):
    """
    插入右子树
    """
    t = root.pop(2)
    if len(t) > 1:
        root.insert(2, [[], t, newBranch])
    else:
        root.insert(2, [[], [], newBranch])


def getRootVal(root):
    """
    获取根节点的值
    """
    return root[0]


def setRootVal(root, newVal):
    """
    修改根节点的值
    """
    root[0] = newVal


def getLeftChild(root):
    """
    获取左孩子节点
    """
    return root[1]


def getRightChile(root):
    """
    获取右孩子节点
    """
    return root[2]


if __name__ == "__main__":
    r = BinaryTree('a')
    print(getRootVal(r))